package map;

import org.junit.Test;

import java.util.LinkedHashMap;

/**
 * 1. LinkedHashMap是 HashMap 的子类
 * LinkedHashMap在HashMap使用的数组+单向链表+红黑树的基础上，又增加了一对双向链表，记录添加的(key, value)的先后顺序。
 * 便于遍历所有的元素；
 * <p>
 * LinkedHashMap 重写了 HashMap的如下方法：
 * Node<K,V> newNode(int hash, K key, V value, Node<K,V> e) {
 * --LinkedHashMap.Entry<K,V> p = new LinkedHashMap.Entry<>(hash, key, value, e);
 * --linkNodeLast(p);
 * --return p;
 * }
 * <p>
 * 2.底层结构：LinkedHashMap内部定义了一个Entry
 * -    static class Entry<K,V> extends HashMap.Node<K,V> {
 * -        Entry<K,V> before, after;
 * -        Entry(int hash, K key, V value, Node<K,V> next) {
 * -            super(hash, key, value, next);
 * -        }
 * -    }
 */
public class LinkedHashMapTest {
    @Test
    public void test() {
        LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put(1, "A");
    }
}
